From 47dc8d4dac9987ad6f28b84b86f882d8959418dd Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Mon, 29 Oct 2001 06:48:04 +0000 Subject: [PATCH] Use -no-undefined on Win32. Make libgdk_pixbuf_1_3_la_OBJECTS depend on 2001-10-29 Tor Lillqvist * Makefile.am: Use -no-undefined on Win32. Make libgdk_pixbuf_1_3_la_OBJECTS depend on gdk-pixbuf-marshal.c. Install import libraries. * gdk_pixbuf.def: Update. * gdk-pixbuf-io.c: (Win32) Use G_WIN32_DLLMAIN_FOR_DLL_NAME, saves the actual DLL name of libgdk_pixbuf. (get_libdir): Use it instead of guessing. * io-xbm.c (gdk_pixbuf__xbm_image_begin_load): Use g_file_open_tmp() insread of mkstemp(). --- gdk-pixbuf/ChangeLog | 15 ++++++++ gdk-pixbuf/Makefile.am | 68 ++++++++++++++++++++++++++++-------- gdk-pixbuf/gdk-pixbuf-io.c | 16 ++++++--- gdk-pixbuf/gdk_pixbuf.def | 11 +++--- gdk-pixbuf/io-xbm.c | 6 ++-- gdk-pixbuf/makefile.mingw.in | 4 +++ 6 files changed, 93 insertions(+), 27 deletions(-) diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 5bcece744b..df906728e9 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,18 @@ +2001-10-29 Tor Lillqvist + + * Makefile.am: Use -no-undefined on Win32. Make + libgdk_pixbuf_1_3_la_OBJECTS depend on + gdk-pixbuf-marshal.c. Install import libraries. + + * gdk_pixbuf.def: Update. + + * gdk-pixbuf-io.c: (Win32) Use G_WIN32_DLLMAIN_FOR_DLL_NAME, saves + the actual DLL name of libgdk_pixbuf. + (get_libdir): Use it instead of guessing. + + * io-xbm.c (gdk_pixbuf__xbm_image_begin_load): Use + g_file_open_tmp() insread of mkstemp(). + 2001-10-18 Matthias Clasen * io-xbm.c (gdk_pixbuf__xbm_image_load_real): Don't dereference diff --git a/gdk-pixbuf/Makefile.am b/gdk-pixbuf/Makefile.am index 53ab591d36..a94fc56434 100644 --- a/gdk-pixbuf/Makefile.am +++ b/gdk-pixbuf/Makefile.am @@ -1,6 +1,39 @@ SUBDIRS = pixops +if PLATFORM_WIN32 +no_undefined = -no-undefined +endif + +if OS_WIN32 +gdk_pixbuf_def = gdk_pixbuf.def +gdk_pixbuf_symbols = -export-symbols $(gdk_pixbuf_def) + +install-libtool-import-lib: + $(INSTALL) .libs/libgdk_pixbuf-1.3.dll.a $(DESTDIR)$(libdir) +uninstall-libtool-import-lib: + -rm $(DESTDIR)$(libdir)/libdk_pixbuf-1.3.dll.a +else +install-libtool-import-lib: +uninstall-libtool-import-lib: +endif + +if MS_LIB_AVAILABLE +noinst_DATA = gdk_pixbuf-1.3.lib + +gdk_pixbuf-1.3.lib: libgdk_pixbuf-1.3.la gdk_pixbuf.def + lib -name:libgdk_pixbuf-1.3-@LT_CURRENT_MINUS_AGE@.dll -def:gdk_pixbuf.def -out:$@ + +install-ms-lib: + $(INSTALL) gdk_pixbuf-1.3.lib $(DESTDIR)$(libdir) + +uninstall-ms-lib: + -rm $(DESTDIR)$(libdir)/gdk_pixbuf-1.3.lib +else +install-ms-lib: +uninstall-ms-lib: +endif + lib_LTLIBRARIES = \ libgdk_pixbuf-1.3.la @@ -12,7 +45,7 @@ module_libs = libgdk_pixbuf-1.3.la $(GDK_PIXBUF_DEP_LIBS) # The PNG plugin. # libpixbufloader_png_la_SOURCES = io-png.c -libpixbufloader_png_la_LDFLAGS = -avoid-version -module +libpixbufloader_png_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_png_la_LIBADD = $(LIBPNG) $(module_libs) libpixbufloader_static_png_la_SOURCES = io-png.c @@ -21,7 +54,7 @@ libpixbufloader_static_png_la_SOURCES = io-png.c # libpixbufloader_static_jpeg_la_SOURCES = io-jpeg.c libpixbufloader_jpeg_la_SOURCES = io-jpeg.c -libpixbufloader_jpeg_la_LDFLAGS = -avoid-version -module +libpixbufloader_jpeg_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_jpeg_la_LIBADD = $(LIBJPEG) $(module_libs) # @@ -29,7 +62,7 @@ libpixbufloader_jpeg_la_LIBADD = $(LIBJPEG) $(module_libs) # libpixbufloader_static_xpm_la_SOURCES = io-xpm.c libpixbufloader_xpm_la_SOURCES = io-xpm.c -libpixbufloader_xpm_la_LDFLAGS = -avoid-version -module +libpixbufloader_xpm_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_xpm_la_LIBADD = $(module_libs) # @@ -37,7 +70,7 @@ libpixbufloader_xpm_la_LIBADD = $(module_libs) # libpixbufloader_static_gif_la_SOURCES = io-gif.c io-gif-animation.c io-gif-animation.h libpixbufloader_gif_la_SOURCES = io-gif.c io-gif-animation.c io-gif-animation.h -libpixbufloader_gif_la_LDFLAGS = -avoid-version -module +libpixbufloader_gif_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_gif_la_LIBADD = $(module_libs) # @@ -45,7 +78,7 @@ libpixbufloader_gif_la_LIBADD = $(module_libs) # libpixbufloader_static_ico_la_SOURCES = io-ico.c libpixbufloader_ico_la_SOURCES = io-ico.c -libpixbufloader_ico_la_LDFLAGS = -avoid-version -module +libpixbufloader_ico_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_ico_la_LIBADD = $(module_libs) # @@ -53,7 +86,7 @@ libpixbufloader_ico_la_LIBADD = $(module_libs) # libpixbufloader_static_ras_la_SOURCES = io-ras.c libpixbufloader_ras_la_SOURCES = io-ras.c -libpixbufloader_ras_la_LDFLAGS = -avoid-version -module +libpixbufloader_ras_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_ras_la_LIBADD = $(module_libs) # @@ -61,7 +94,7 @@ libpixbufloader_ras_la_LIBADD = $(module_libs) # libpixbufloader_static_tiff_la_SOURCES = io-tiff.c libpixbufloader_tiff_la_SOURCES = io-tiff.c -libpixbufloader_tiff_la_LDFLAGS = -avoid-version -module +libpixbufloader_tiff_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_tiff_la_LIBADD = $(LIBTIFF) $(module_libs) # @@ -69,7 +102,7 @@ libpixbufloader_tiff_la_LIBADD = $(LIBTIFF) $(module_libs) # libpixbufloader_static_pnm_la_SOURCES = io-pnm.c libpixbufloader_pnm_la_SOURCES = io-pnm.c -libpixbufloader_pnm_la_LDFLAGS = -avoid-version -module +libpixbufloader_pnm_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_pnm_la_LIBADD = $(module_libs) # @@ -77,7 +110,7 @@ libpixbufloader_pnm_la_LIBADD = $(module_libs) # libpixbufloader_static_bmp_la_SOURCES = io-bmp.c libpixbufloader_bmp_la_SOURCES = io-bmp.c -libpixbufloader_bmp_la_LDFLAGS = -avoid-version -module +libpixbufloader_bmp_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_bmp_la_LIBADD = $(module_libs) # @@ -85,21 +118,21 @@ libpixbufloader_bmp_la_LIBADD = $(module_libs) # libpixbufloader_static_wbmp_la_SOURCES = io-wbmp.c libpixbufloader_wbmp_la_SOURCES = io-wbmp.c -libpixbufloader_wbmp_la_LDFLAGS = -avoid-version -module +libpixbufloader_wbmp_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_wbmp_la_LIBADD = $(module_libs) # # The XBM loader # libpixbufloader_xbm_la_SOURCES = io-xbm.c -libpixbufloader_xbm_la_LDFLAGS = -avoid-version -module +libpixbufloader_xbm_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_xbm_la_LIBADD = $(module_libs) # # The TGA loader # libpixbufloader_tga_la_SOURCES = io-tga.c -libpixbufloader_tga_la_LDFLAGS = -avoid-version -module +libpixbufloader_tga_la_LDFLAGS = -avoid-version -module $(no_undefined) libpixbufloader_tga_la_LIBADD = $(module_libs) if HAVE_PNG @@ -175,6 +208,7 @@ INCLUDES = @STRIP_BEGIN@ \ -I$(top_srcdir) -I$(top_builddir) \ -I$(top_srcdir)/gdk-pixbuf \ -I$(top_builddir)/gdk-pixbuf \ + -DGTK_VERSION=\"@GTK_VERSION@\" \ @INCLUDED_LOADER_DEFINE@ \ @GTK_DEBUG_FLAGS@ \ @GDK_PIXBUF_DEP_CFLAGS@ \ @@ -217,10 +251,12 @@ libgdk_pixbuf_1_3_la_SOURCES = @STRIP_BEGIN@ \ libgdk_pixbuf_1_3_la_LDFLAGS = @STRIP_BEGIN@ \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ @LIBTOOL_EXPORT_OPTIONS@ \ + $(no_undefined) \ + $(gdk_pixbuf_symbols) \ @STRIP_END@ libgdk_pixbuf_1_3_la_LIBADD = pixops/libpixops.la $(builtin_objs) $(GDK_PIXBUF_DEP_LIBS) -libgdk_pixbuf_1_3_la_DEPENDENCIES = $(builtin_objs) +libgdk_pixbuf_1_3_la_DEPENDENCIES = $(builtin_objs) $(gdk_pixbuf_def) gdk_pixbuf_headers = \ gdk-pixbuf.h \ @@ -238,7 +274,7 @@ noinst_HEADERS = \ gdk_pixbuf_built_headers = gdk-pixbuf-enum-types.h gdk-pixbuf-marshal.h gdk_pixbuf_built_cfiles = gdk-pixbuf-enum-types.c -$(OBJECTS): $(gdk_pixbuf_built_headers) $(gdk_pixbuf_built_cfiles) gdk-pixbuf-marshal.c +$(libgdk_pixbuf_1_3_la_OBJECTS) $(OBJECTS): $(gdk_pixbuf_built_headers) $(gdk_pixbuf_built_cfiles) gdk-pixbuf-marshal.c CLEANFILES = MAINTAINERCLEANFILES = $(gdk_pixbuf_built_headers) $(gdk_pixbuf_built_cfiles) gdk-pixbuf-marshal.c @@ -328,3 +364,7 @@ EXTRA_DIST = \ pixbufloader_tiff.def \ pixbufloader_wbmp.def \ pixbufloader_xbm.def + +install-data-local: install-ms-lib install-libtool-import-lib + +uninstall-local: uninstall-ms-lib uninstall-libtool-import-lib diff --git a/gdk-pixbuf/gdk-pixbuf-io.c b/gdk-pixbuf/gdk-pixbuf-io.c index e97036ac1c..c2e9a27c82 100644 --- a/gdk-pixbuf/gdk-pixbuf-io.c +++ b/gdk-pixbuf/gdk-pixbuf-io.c @@ -28,6 +28,12 @@ #include "gdk-pixbuf-private.h" #include "gdk-pixbuf-io.h" +#ifdef G_OS_WIN32 +#define STRICT +#include +#undef STRICT +#endif + static gboolean @@ -252,6 +258,10 @@ pixbuf_module_symbol (GModule *module, const char *module_name, const char *symb #ifdef G_OS_WIN32 +/* DllMain function needed to tuck away the gdk-pixbuf DLL name */ + +G_WIN32_DLLMAIN_FOR_DLL_NAME (static, dll_name) + static char * get_libdir (void) { @@ -259,14 +269,12 @@ get_libdir (void) if (libdir == NULL) libdir = g_win32_get_package_installation_subdirectory - (GETTEXT_PACKAGE, - g_strdup_printf ("gdk_pixbuf-%d.%d.dll", - GDK_PIXBUF_MAJOR, GDK_PIXBUF_MINOR), - "loaders"); + (GETTEXT_PACKAGE, dll_name, "lib\\gtk-2.0\\" GTK_VERSION "\\loaders"); return libdir; } +#undef PIXBUF_LIBDIR #define PIXBUF_LIBDIR get_libdir () #endif diff --git a/gdk-pixbuf/gdk_pixbuf.def b/gdk-pixbuf/gdk_pixbuf.def index b3533e8300..7b48de9d11 100644 --- a/gdk-pixbuf/gdk_pixbuf.def +++ b/gdk-pixbuf/gdk_pixbuf.def @@ -2,7 +2,10 @@ EXPORTS _gdk_pixbuf_get_module _gdk_pixbuf_get_named_module _gdk_pixbuf_load_module + gdk_colorspace_get_type + gdk_interp_type_get_type gdk_pixbuf_add_alpha + gdk_pixbuf_alpha_mode_get_type gdk_pixbuf_animation_get_height gdk_pixbuf_animation_get_iter gdk_pixbuf_animation_get_static_image @@ -22,6 +25,7 @@ EXPORTS gdk_pixbuf_composite_color_simple gdk_pixbuf_copy gdk_pixbuf_copy_area + gdk_pixbuf_error_get_type gdk_pixbuf_error_quark gdk_pixbuf_fill gdk_pixbuf_from_pixdata @@ -48,19 +52,14 @@ EXPORTS gdk_pixbuf_new_from_xpm_data gdk_pixbuf_new_subpixbuf gdk_pixbuf_ref -; gdk_pixbuf_rotate gdk_pixbuf_saturate_and_pixelate gdk_pixbuf_save gdk_pixbuf_savev gdk_pixbuf_scale gdk_pixbuf_scale_simple + gdk_pixbuf_set_option gdk_pixbuf_unref gdk_pixdata_deserialize gdk_pixdata_from_pixbuf gdk_pixdata_serialize gdk_pixdata_to_csource - - gdk_pixbuf_alpha_mode_get_type - gdk_colorspace_get_type - gdk_pixbuf_error_get_type - gdk_interp_type_get_type diff --git a/gdk-pixbuf/io-xbm.c b/gdk-pixbuf/io-xbm.c index c989ada04b..62413a1a96 100644 --- a/gdk-pixbuf/io-xbm.c +++ b/gdk-pixbuf/io-xbm.c @@ -365,10 +365,10 @@ gdk_pixbuf__xbm_image_begin_load (ModulePreparedNotifyFunc prepare_func, context->update_func = update_func; context->user_data = user_data; context->all_okay = TRUE; - context->tempname = g_strdup ("/tmp/gdkpixbuf-xbm-tmp.XXXXXX"); - fd = mkstemp (context->tempname); + fd = g_file_open_tmp ("gdkpixbuf-xbm-tmp.XXXXXX", + &context->tempname, + NULL); if (fd < 0) { - g_free (context->tempname); g_free (context); return NULL; } diff --git a/gdk-pixbuf/makefile.mingw.in b/gdk-pixbuf/makefile.mingw.in index 30629261dc..2d356d22fb 100644 --- a/gdk-pixbuf/makefile.mingw.in +++ b/gdk-pixbuf/makefile.mingw.in @@ -1,3 +1,7 @@ +#### +#### Out of order! Use autoconfiscation. +#### + ## Makefile for building the gdk_pixbuf DLL with gcc on Win32 ## Use: make -f makefile.mingw -- 2.30.2